/*
 * Sonatype Nexus (TM) Open Source Version
 * Copyright (c) 2008-present Sonatype, Inc.
 * All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
 *
 * This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
 * which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
 *
 * Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
 * of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
 * Eclipse Foundation. All other trademarks are the property of their respective owners.
 */
import React from 'react';

import {NxTextInput} from '@sonatype/react-shared-components';
import FormUtils from '../../../../interface/FormUtils';

import {SUPPORTED_FIELD_TYPES} from '../FormFieldsFactoryConstants';

const Field = ({id, dynamicProps, current, onChange}) => {
  const {type, initialValue, readOnly, disabled} = dynamicProps;
  const {data} = current.context;
  let props = {disabled};

  if (type === 'password') {
    props = {
      ...props,
      type: 'password',
      autoComplete: 'new-password',
    };
  }

  if (readOnly) {
    return data[id];
  }

  return <NxTextInput
      {...props}
      {...FormUtils.fieldProps(id, current, initialValue || '')}
      onChange={value => onChange(id, value)}
  />;
};

export default {
  types: SUPPORTED_FIELD_TYPES.TEXT,
  component: Field,
};

